s = "Python is great!"

# 1. 字符串反转: 给定字符串`s = "Python is great!"`，不使用任何内置函数，编写代码以反转字符串。
reversed_s = ''
for char in s:
    reversed_s = char + reversed_s  # 将每个字符加到结果字符串前面
print(reversed_s)  # 输出: "!taerg si nohtyP"

# 2. 字符计数: 对于同一个字符串`s`，计算字符 `t'` 在其中出现的次数。
count = 0
for char in s:
    if char == 't':
        count += 1
print(count)  # 输出: 2

# 3. 替换字符: 把字符串`s` 中的所有空格替换成下划线 ``。
new_s = ''
for char in s:
    new_s += '_' if char == ' ' else char
print(new_s)  # 输出: "Python_is_great!"

# 4. 检查回文: 检查字符串`s2 = "A man, a plan, a canal, Panama!"` 在忽略大小写、标点和空格的情况下是否为回文字符串。
s2 = "A man, a plan, a canal, Panama!"
cleaned = ''.join(c.lower() for c in s2 if c.isalpha())
is_palindrome = cleaned == cleaned[::-1]
print(is_palindrome)  # 输出: True

# 5. 子字符串查找: 在`s` 中查找第一次出现子字符串 `is"` 的位置。
def find_substring(s, sub):
    len_sub = len(sub)
    for i in range(len(s) - len_sub + 1):
        if s[i:i+len_sub] == sub:
            return i
    return -1

pos = find_substring(s, "is")
print(pos)  # 输出: 7

# 6. 字符串插入: 在`s` 中第一个 `t'` 字符之后插入子字符串`"_inserted"`。
insert_pos = s.find('t') + 1
new_s = s[:insert_pos] + "_inserted" + s[insert_pos:]
print(new_s)  # 输出: "Py_insertedthon is great!"

# 7. 部分替换: 替换`s` 中第一次出现的 `great"` 为 `awesome"`。
def replace_first(s, old, new):
    pos = s.find(old)
    if pos != -1:
        return s[:pos] + new + s[pos+len(old):]
    return s

new_s = replace_first(s, "great", "awesome")
print(new_s)  # 输出: "Python is awesome!"

# 8. 切片与拼接: 将`s` 切分为两部分，其中第一部分包含前半部分的字符，第二部分包含后半部分的字符，然后将这两部分以相反顺序拼接起来。
mid = len(s) // 2
reversed_parts = s[mid:] + s[:mid]
print(reversed_parts)  # 输出: "s great!Python i"

# 9. 创建字符串列表: 使用列表生成式，根据字符串`s` 创建一个列表，其中包含`s` 的每个单词的首字母大写形式。
words = s.split()
capitalized = [word[0].upper() for word in words]
print(capitalized)  # 输出: ['P', 'I', 'G']

# 10. 字符替换加密: 编写一个函数`encrypt`，使用字典 `a: m, b: n, ... z: l}` 的对应规则加密字符串`s3 = "encryption"`。
s3 = "encryption"
def encrypt(text):
    # 创建加密映射字典（字母表右移12位）
    alphabet = 'abcdefghijklmnopqrstuvwxyz'
    shifted = alphabet[12:] + alphabet[:12]
    mapping = {a: b for a, b in zip(alphabet, shifted)}

    encrypted = []
    for char in text.lower():
        encrypted.append(mapping.get(char, char))  # 非字母字符不变
    return ''.join(encrypted)
encrypted_s3 = encrypt(s3)
print(encrypted_s3)  # 输出: "qapbkdwezq"（验证：e→q, n→a, c→p等）
